\contentsline {part}{I\hspace {1em}Introduction}{7}
\contentsline {section}{\numberline {1}Background}{8}
\contentsline {subsection}{\numberline {1.1}Dynamic Load Distribution}{9}
\contentsline {subsection}{\numberline {1.2}Preemptive Vs. Non-Preemptive Load Balancing}{10}
\contentsline {subsection}{\numberline {1.3}Later Work}{12}
\contentsline {subsection}{\numberline {1.4}Process Migration}{12}
\contentsline {section}{\numberline {2}The Xen Virtual Machine Monitor}{13}
\contentsline {subsection}{\numberline {2.1}Datacenter Applications}{14}
\contentsline {subsection}{\numberline {2.2}Cluster Applications}{15}
\contentsline {subsection}{\numberline {2.3}Live Migration}{17}
\contentsline {section}{\numberline {3}Current Work}{17}
\contentsline {subsection}{\numberline {3.1}Problem Details}{18}
\contentsline {subsubsection}{\numberline {3.1.1}Metrics}{18}
\contentsline {subsubsection}{\numberline {3.1.2}Load Balancing Algorithm}{18}
\contentsline {subsubsection}{\numberline {3.1.3}Virtual Machine Selection}{19}
\contentsline {part}{II\hspace {1em}Methods}{21}
\contentsline {section}{\numberline {4}Anatomy of the Xen VMM}{21}
\contentsline {section}{\numberline {5}xenbal Balancing Software}{23}
\contentsline {subsection}{\numberline {5.1}Architecture}{24}
\contentsline {subsection}{\numberline {5.2}Balancing Algorithms}{25}
\contentsline {subsubsection}{\numberline {5.2.1}Simple Balancing Algorithm}{26}
\contentsline {subsubsection}{\numberline {5.2.2}P-loss Balancing Algorithm}{26}
\contentsline {section}{\numberline {6}XenSim Simulator}{28}
\contentsline {subsection}{\numberline {6.1}Core objects}{28}
\contentsline {subsection}{\numberline {6.2}Execution model}{30}
\contentsline {subsection}{\numberline {6.3}Simulation variables}{30}
\contentsline {subsection}{\numberline {6.4}Improvements}{31}
\contentsline {part}{III\hspace {1em}Results}{32}
\contentsline {section}{\numberline {7}Major Obstacles}{32}
\contentsline {section}{\numberline {8}Preliminary Tests}{33}
\contentsline {subsection}{\numberline {8.1}XenSim Verification Tests}{33}
\contentsline {subsection}{\numberline {8.2}Read Intensive NFS Test}{33}
\contentsline {section}{\numberline {9}Primes: Full Load Tests}{38}
\contentsline {section}{\numberline {10}Apache Servers: Real World Load Tests}{39}
\contentsline {subsection}{\numberline {10.1}Initial tests}{39}
\contentsline {subsubsection}{\numberline {10.1.1}Hammerhead - a web server benchmarking tool}{39}
\contentsline {subsubsection}{\numberline {10.1.2}Load explorations}{39}
\contentsline {subsection}{\numberline {10.2}Simple Algorithm Development}{40}
\contentsline {subsubsection}{\numberline {10.2.1}First test}{43}
\contentsline {subsubsection}{\numberline {10.2.2}Load memory}{43}
\contentsline {subsubsection}{\numberline {10.2.3}Number based balancing}{46}
\contentsline {subsubsection}{\numberline {10.2.4}Receiver initiated modifications}{46}
\contentsline {section}{\numberline {11}P-loss algorithm}{49}
\contentsline {part}{IV\hspace {1em}Discussion}{52}
\contentsline {section}{\numberline {12}Our algorithms: strengths and weaknesses}{52}
\contentsline {subsection}{\numberline {12.1}Simple balancing algorithm}{52}
\contentsline {subsection}{\numberline {12.2}P-loss balancing algorithm}{53}
\contentsline {section}{\numberline {13}Performance modeling}{54}
\contentsline {subsection}{\numberline {13.1}Data pre-gathering}{54}
\contentsline {subsection}{\numberline {13.2}Short term trend identification}{55}
\contentsline {subsection}{\numberline {13.3}Performance guarantees}{55}
\contentsline {subsection}{\numberline {13.4}Resource balancing}{56}
\contentsline {subsubsection}{\numberline {13.4.1}CPU Load}{56}
\contentsline {subsubsection}{\numberline {13.4.2}Network Load}{56}
\contentsline {subsubsection}{\numberline {13.4.3}Memory capacity}{56}
\contentsline {subsubsection}{\numberline {13.4.4}Other factors}{57}
\contentsline {subsection}{\numberline {13.5}Machine learning}{57}
\contentsline {section}{\numberline {14}Balancing techniques}{58}
\contentsline {subsection}{\numberline {14.1}Load based balancing}{58}
\contentsline {subsection}{\numberline {14.2}Number based balancing}{60}
\contentsline {subsection}{\numberline {14.3}Machine learning algorithms}{60}
\contentsline {section}{\numberline {15}Other considerations}{61}
\contentsline {subsection}{\numberline {15.1}Monitor architecture}{61}
\contentsline {subsection}{\numberline {15.2}Node affinity}{62}
\contentsline {section}{\numberline {16}Future uses of Xen and applications of node balancing within}{63}
\contentsline {subsection}{\numberline {16.1}Server pool environments}{63}
\contentsline {subsection}{\numberline {16.2}Scientific computation}{63}
\contentsline {subsection}{\numberline {16.3}Workstation virtualization}{64}
\contentsline {part}{V\hspace {1em}Future Work}{66}
\contentsline {part}{VI\hspace {1em}Conclusion}{66}
